Repository navigation
Conversation
A Terminal view retires when its terminal closes or exits. FRAME_ACK,
INPUT, MOUSE, WHEEL, and WHEEL_AT the client sent before it saw that still
name the view, and update_terminal_feedback treated the unknown view_id as a
protocol error. The dispatch loop then ended the whole native session
("reliable frame handler failed: class=Event family=16 kind=34"), so every
other in-flight request on the connection failed with EPIPE/ECONNRESET.
The spec already says stale feedback is ignored. Return None for a missing
view and drop the event.
|
Superseded by yas-run#100 (opened upstream). |
Coverage
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A Terminal view retires as soon as its terminal closes or exits. The client can still send
FRAME_ACK(orINPUT/MOUSE/WHEEL/WHEEL_AT) for that view if it hasn't seen the retirement yet.update_terminal_feedbacktreated the unknownview_idas a protocol error, so the dispatch loop ended the whole native session:(family 16 / kind 34 =
yas.terminalFRAME_ACK). Any other request in flight on that connection then fails withwrite EPIPE/read ECONNRESET.docs/design/yas.mdalready says "Stale feedback is ignored", and Surfaces already tolerate this viaretired_views. Now a missing view returnsNoneand the event is dropped. Malformed payloads and out-of-window feedback on live views are still errors.Impact on Indent sandboxes. Every short-lived
bashcommand on a Yas box is a terminal that exits and gets closed, so parallel commands hit this race:ComputerRpcRemoteErrorover 7d:write EPIPE215 calls / 178 sessions / 13 orgs, andread ECONNRESET63 / 57 / 5.remoting_runtime = yascomputers. It started with the Yas-for-all rollout on 2026-09-30.Repro. neo's real
BlitShellruns 20 concurrentbash.runcommands (300 lines of output each) against a private server:mainEvery failure in the stock runs matches the exit line above.
Test.
terminal_feedback_for_a_closed_view_does_not_end_the_sessionacks a frame afterCLOSE, then checks the session still answers a request. Without the fix it fails with the sameclass=Event family=16 kind=34exit.With this alone, the SDK's fire-and-forget
setFocuson a retired view now resolves to an unhandledNOT_FOUNDmore often, and Node exits on that. Ship it together with #50.Tag
@indentto continue the conversation here.